1. Field of the Invention
The present invention relates to a distributed cache system for storing state transfer information. The cached state transfer information relates to the state of sessions between one or more client devices and at least one server device. For example, the state information may be credential information that has been exchanged between a client device and a server device to established secure communication between the two devices. According to the invention, the state information is cached at distributed locations accessible to a second server device. If the connection between a client device and the first server device is terminated, the second server device can then accept a connection from the client device using the cached state information.
2. Discussion of the Prior Art
Device networks have become ubiquitous in our modern society. Perhaps the most well known of these networks is the Internet, which may facilitate communication connections between thousands of individual devices, smaller proprietary and public device networks, and other devices. Typically, networks operate using a client-server relationship. With this relationship, one device, i.e., the “client” device, requests information from a “server” device that provides the requested information in response. The information may be of any type including, for example, pages written in the hypertext markup language (HTML) or other markup language, results of a particular calculation, or even raw digital data retrieved by the server device from a storage unit.
In order for the client device to request information from the server device and for the server device to provide the information to the client device in reply, the client device must establish a connection with the server device. A variety of protocols for these connections are known in the art. Two commonly used protocols, for example, are the transmission control protocol (TCP) and the Internet protocol (IP). As is known in the art, these protocols define the parameters used to exchange sets of data between the server device and the client device during a session. As is also known in the art, a session may have a particular state at any given time based upon the history of data exchanged between the client device and the server device.
For example, some device networks employ a security arrangement to ensure that unauthorized persons do not intercept or insert data exchanged between a client device and a server device. To establish a secure session, the client device may provide the server device with a password or other credential information that will authenticate the client device's identity to the server device. As is known in the art, credential information may include one or more of a public or private encryption key, a password, an authentication key, a digital signature, a digital certificate, a Kerberos ticket, or any other information used to encrypt data or authenticate the identity of a party. Also, the client and server device may exchange information in order to designate an encryption key for encrypting data to be exchanged between the client and server devices. Both the credential information and the designated encryption key are examples of state information for the session between the client device and the server device, as they both reflect a history of information previously exchanged between the two devices.
While the server-client device relationship offers many advantages to computer networks, one significant problem with this arrangement will now be described with reference to FIG. 1. This figure illustrates a typical computer network configuration 101. The network 101 includes a number of client devices 103A, 103B, 103C, 103D . . . 103θ, a plurality of proxy server devices 105A, 105B, 105C, 105D . . . 105ψ, and at least one master server device 107. As will be understood by those of ordinary skill in the art, each of these devices can be implemented on a single computer or other computing unit employing a programmable processing device. Typically, a computer will have a microprocessor, a memory medium, and one or more input and output devices. Alternately, multiple client and/or server devices may be implemented on a single computer or other computing unit, or a single client or server device can be distributed among multiple computers or computing units.
As shown in the figure, each client device 103 communicates with a proxy server device 105 through a communication medium 109, such as the Internet or a direct-dialed telephone connection. For example, the client device 103A communicates with the proxy server device 105A. Each proxy server device 105 then communicates with the master server device 107. Thus, the proxy server device 105A can relay messages between the client devices 103A and the master server device 107. The network 101 also includes a firewall 111 for limiting access to the proxy server devices 105A, 105B, 105C, 105D . . . 105ψ, and a load balancer 113 for distributing connections from the client devices 103A, 103B, 103C, 103D . . . 103θ evenly among the proxy server devices 105A, 105B, 105C, 105D . . . 105ψ. It should be noted that, while FIG. 1 illustrates only a single master server device 107 for convenience of understanding, the proxy server devices 105A, 105B, 105C, 105D . . . 105ψ might normally communicate with a plurality of master server devices 107 simultaneously.
In this example, the client devices 103A, 103B, 103C, 103D . . . 103θ communicate with the master server device 107 through the proxy server device 105A, 105B, 105C, 105D . . . 105ψ. This arrangement is commonly used where, e.g., the proxy server devices 105A, 105B, 105C, 105D . . . 105ψ perform a function for the master server device 107 in order to conserve the resources of the master server device 107. For example, if identity of a client device 103 must be authenticated before the master server device 107 can respond to a request for information, the proxy servers 105A, 105B, 105C, 105D . . . 105ψ may be used to authenticate the client devices 103A, 103B, 103C, 103D . . . 103θ before passing a request for information to the master server 107. This frees the master server 107 from the responsibility of authenticating the identity of each client device 103, and allows the master server 107 to dedicate its resources (e.g., its microprocessor operations) to providing requested information.
The proxy server devices 105A, 105B, 105C, 105D . . . 105ψ may also be used to provide secure communication between the master server device 107 and the client device 103. With this arrangement, for example, the client device 103 and the server device 105A may designate an encryption key to encrypt messages exchanged between the two devices. Once a secure session is established between the client device 103A and the server device 105A, the proxy server device 105A can simply decrypt information from the client device 103A and relay it to the master server device 107. The proxy server device 105A can also encrypt information from the master server device 107 and relay it to the client device 103A. As will be appreciated by those of ordinary skill in the art, this arrangement shifts the overhead of providing secure communication from the master server 107 to the proxy server devices 105A, 105B, 105C, 105D . . . 105ψ, thereby allowing the master server device 107 to more quickly respond to requests from the client devices.
A problem with this arrangement occurs, however, if the connection between a client device 103 (e.g., the client device 103A) and its associated proxy server device 103 (e.g., the proxy server device 105A) is terminated. The client device 103A may then try to reestablish communication with the master server device 107 through another proxy server device 105, e.g., proxy server device 105B. For example, the first proxy server device 105A may have failed and be unavailable, or the load balancer 113 may simply have routed the new connection from the client device 103A to the proxy server device 105B to reduce the communication load on the first proxy server device 103A. In any case, the new proxy server device 105B will not have the authentication information authenticating the identity of the client device 103A. Also, the new proxy server device 103B will not have the encryption key established with the previous proxy server device 105A. Accordingly, the state of the session between the client device 103 and the original proxy server device 105A is lost, and the client device 103 must reestablish its authentication information and an encryption key with the new proxy server device 105B.
This process is time-consuming, and may require a substantial amount processing time from the new proxy server device 105B. Moreover, depending upon the state of the original session between the client device 103 and the proxy server device 105A, the loss of the previous session's state may be irreplaceable. For example, if the state of the earlier session was established by exchanging data that cannot be duplicated, then the state of that session cannot be recreated.
To address this problem, some network systems attempt to ensure that a terminated connection between a client device 103 and its associated proxy server device 105 is reestablished with that original proxy server device 105 rather than with a new proxy server device 105. For example, some systems design the load balancer 113 to recognize when the client device 103A has established a session with the proxy server device 105A, and then routing all future connections from client device 103A to the proxy server device 105A. This solution has a number of drawbacks, however. It requires that the load balancer 113 be very complex and perform a variety of functions. Further, it does not address the situation that occurs if the initial proxy server device 105A becomes unavailable, e.g., if it fails and cannot reestablish a connection with the client device 103. It also does not address the situation where the first proxy server device 105A becomes overloaded with connections to other client devices 103. In effect, this solution may prevent the load balancer 113 from performing a load balancing function.